package org.mx.dal.config;

import org.mx.StringUtils;
import org.springframework.core.env.Environment;

/**
 * 描述： JPA配置对象
 *
 * @author john peng
 * Date time 2018/7/22 下午12:39
 */
public class JpaConfigBean {
	private Environment env;
	private String prefix;

	/**
	 * 构造函数
	 * @param env Spring IoC环境
	 * @param prefix 前缀
	 */
	public JpaConfigBean(Environment env, String prefix) {
		super();
		this.env = env;
		this.prefix = prefix;
	}
	
	/**
	 * 获取PersistenceUnit名称
	 * @return Unit名称
	 */
	public String getUnitName() {
		return env.getProperty(String.format("%s.unitName", prefix), "default");
	}

	/**
	 * 获取JPA数据库枚举
	 *
	 * @return JPA数据库枚举
	 */
	public String getJpaDatabase() {
		return env.getProperty(String.format("%s.database", prefix), "H2");
	}

	/**
	 * 获取JPA数据库平台方言
	 *
	 * @return 数据库平台方言
	 */
	public String getJpaDatabasePlatform() {
		return env.getProperty(String.format("%s.databasePlatform", prefix), "org.hibernate.dialect.H2Dialect");
	}

	/**
	 * 获取需要扫描的JPA实体包路径
	 *
	 * @return JPA实体包路径数组
	 */
	public String[] getJpaEntityPackages() {
		return StringUtils.split(env.getProperty(String.format("%s.entity.packages", prefix), ""));
	}

	/**
	 * 获取是否创建DDL
	 *
	 * @return 返回true表示创建，否则不创建
	 */
	public boolean isGenerateDDL() {
		return env.getProperty(String.format("%s.generateDDL", prefix), Boolean.class, false);
	}

	/**
	 * 获取是否显示SQL
	 *
	 * @return 返回true表示显示，否则不显示。
	 */
	public boolean isShowSQL() {
		return env.getProperty(String.format("%s.showSQL", prefix), Boolean.class, false);
	}
}
